package com.yqb.study.modular.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.plugins.Page;
import com.yqb.study.modular.persistence.model.City;

/**
 * 查询城市表
 */
public interface ICityService {
	/**
	 * 不加DataSource注解，默认从Master查询数据
	 * @return 
	 */
	List<City> getAllCityInfo();
	
	/**
	 * 不加DataSource注解，默认从Master查询数据
	 * @param id
	 * @return
	 */
	List<City> getCityInfoWith(int id);

	/**
	 * 使用DataSource注解，dataSourceEnum指定为DataSourceEnum.MASTERDB
	 * dataSourceEnum不指定默认也是DataSourceEnum.MASTERDB
	 */
    void getAllCityInfoFromMasterDb();
    
    /**
     * 使用DataSource注解，dataSourceEnum指定为DataSourceEnum.CLUSTER
     */
    void getAllCityInfoFromClusterDb();
    
    /**
     * 使用事务注解，检查是否有回退
     * @param cityList
     */
    void saveCityListInMasterDb(List<City> cityList);
    
    /**
     * 不使用事务注解，检查保存情况
     * @param cityList
     */
    void saveCityListInClusterDb(List<City> cityList);
    
    /**
     * 带搜索条件的分页查询
     * @param page 分页参数
     * @param searchCond 搜索条件
     * @return
     */
    List<City> getPageCityInfoFromClusterDb(Page<City> page, Map<String, String> searchCond);
    
    /**
     * 带搜索条件的分页查询
     * @param page 分页参数
     * @param searchCond 搜索条件
     * @return
     */
    List<Map<String, Object>> getPageCityInfoMapFromClusterDb(Page<Map<String, Object>> page, Map<String, String> searchCond);
    
    /**
     * 按照城市名称删除记录
     * @param cityName
     * @return
     */
    int deleteCityInfo(String cityName);
    
    /**
     * 按照主键id更新城市信息
     * @param city
     * @return
     */
    int updateCityInfo(City city);
}
